﻿using System.Collections.Generic;

namespace Algorytm
{
    public class Algorytm_Para2
    {
        public int a, b;

        public Algorytm_Para2() { }

        public Algorytm_Para2(int aa, int bb)
        {
            a = aa;
            b = bb;
        }
    }

    public class Algorytm_Zajecia
    {
        public int numer_przedmiotu;
        public int maksymalna_liczba_godzin;
        public int grupy;
        public int obecna_liczba_godzin;
        public int numer_prowadzacego;
        List<Algorytm_Para2> lista;

        public Algorytm_Zajecia(int _numer_przedmiotu, int _liczba_godzin, int liczba_grup)
        {
            lista = new List<Algorytm_Para2>();
            obecna_liczba_godzin = 0;
            numer_przedmiotu = _numer_przedmiotu;
            grupy = liczba_grup;
            maksymalna_liczba_godzin = _liczba_godzin * grupy;
            numer_prowadzacego = -1;
        }

        public void Print2()
        {
            Algorytm_Tworzenie_dla_Szkoly.p("nr " + numer_przedmiotu + " obecna liczba " + obecna_liczba_godzin + " maks " +
                maksymalna_liczba_godzin + " liczba par " + lista.Count + ":");
            foreach (var item in lista)
            {
                Algorytm_Tworzenie_dla_Szkoly.p("" + item.a + " " + item.b);
            }
        }

        public bool czy_sa_miejsca()
        {
            if (obecna_liczba_godzin < maksymalna_liczba_godzin) return true;
            else return false;
        }

        public void dodaj_zajecia(int prowadzacy, int dzien, int godzina)
        {
            numer_prowadzacego = prowadzacy;
            obecna_liczba_godzin++;
            lista.Add(new Algorytm_Para2(dzien, godzina));
        }

        public void usun_zajecia(int dzien, int godzina)
        {
            Algorytm_Para2 para = null;
            foreach (var item in lista)
            {
                if (item.a == dzien && item.b == godzina)
                {
                    para = item;
                    break;
                }
            }
            obecna_liczba_godzin--;
            lista.Remove(para);
        }

        public int daj_prowdzacego()
        {
            return numer_prowadzacego;
        }

        public int licza_zajec_w_dniu(int dzien)
        {
            int counter = 0;
            foreach (var item in lista)
            {
                if (item.a == dzien) counter++;
            }
            return counter;
        }
    }
}